package leetcode;

import org.junit.Test;

/**
 * @author Liangyaoyun
 */
public class Rotating_array {
    class Solution {
        //[-100,3,99,-1,]
        public void rotate(int[] nums, int k) {
            k %= nums.length;
            reverse(nums, 0, nums.length - 1);
            reverse(nums, 0, k - 1);
            reverse(nums, k, nums.length - 1);
        }

        public void reverse(int[] nums, int start, int end) {
            while (start < end) {
                int temp = nums[start];
                nums[start] = nums[end];
                nums[end] = temp;
                start += 1;
                end -= 1;
            }
        }
    }
}
//    public void rotate(int[] nums, int k) {
//        int len=nums.length;
//        k=k%len;
//        int count=0;
//        boolean flag=true;
//        int i=k;
//        int j=len-1;
//        if (k!=0) {
//            //将整个数组翻转
//            while(flag){
//                int t=nums[j];
//                nums[j]=nums[count];
//                nums[count]=t;
//                count++;
//                j--;
//                if(count==k){
//                    flag=false;
//                }
//            }
//            //将前半部分数组翻转
//            int end=k-1;
//            int start=0;
//            while(start<end){
//                int t=nums[start];
//                nums[start]=nums[end];
//                nums[end]=t;
//                start++;
//                end--;
//            }
//            for(int u=k;u<len;u++){
//                if(u==len-1){
//                    break;
//                }
//                int q=nums[len-1];
//                nums[len-1]=nums[u];
//                nums[u]=q;
//                len--;
//            }
//        }
//    }
